/**
 * 
 * 计算面积
 * 
 * 题目描述

绘图机器的绘图笔初始位置在原点(0,0)机器启动后按照以下规则来进行绘制直线。

1. 尝试沿着横线坐标正向绘制直线直到给定的终点E

2. 期间可以通过指令在纵坐标轴方向进行偏移，offsetY为正数表示正向偏移,为负数表示负向偏移

给定的横坐标终点值E 以及若干条绘制指令，

请计算绘制的直线和横坐标轴以及x=E的直线组成的图形面积。

输入描述
首行为两个整数 N 和 E
表示有N条指令,机器运行的横坐标终点值E
接下来N行 每行两个整数表示一条绘制指令x offsetY
用例保证横坐标x以递增排序的方式出现
且不会出现相同横坐标x
取值范围

0<N<=10000
0<=x<=E<=20000
-10000<=offsetY<=10000
输出描述
一个整数表示计算得到的面积 用例保证结果范围在0到4294967295之内。
用例
输入	
4 10
1 1
2 1
3 1
4 -2
输出	12
说明	无
输入	
2 4
0 1
2 -2
输出	4
说明	无
 * 
 */

import java.util.Scanner;

/**
  * 

  题目解析
注意下面每个拐点上标记不是坐标信息，而是 (x,offsetY)，其中offsetY是偏移

不规则图形切成多个规则的举行进行求面积

将上面红色线框对应的复杂图形的面积求解，切割为横轴上每个单位长度的矩形面积求解，而每单位长度的矩形面积就等于对应的高度，即纵轴坐标的绝对值，因此我们只需要将offsetY偏移转为纵坐标的即可。

而题目描述中：用例保证横坐标x以递增排序的方式出现。

这里只强调递增没有强调连续，因此我们需要考虑不连续的offsetY转纵坐标的场景，其实也很简单，断档的offsetY其实默认为0。
  */
public class 计算面积 {
    
    public static void main(String[] args) {
        
        try{

            Scanner scanner = new Scanner(System.in);
            int commandCount = scanner.nextInt();
            int xEnd = scanner.nextInt();

            int preX = 0; //记录上次的 x坐标
            int preYOffset =0; //记录上次的y做偏移

            int aeraSum = 0;

            //解析指令数据
            for(int i=0; i<commandCount; i++){
                int xpoint = scanner.nextInt(); //本次的x 坐标
                int yOffest = scanner.nextInt(); //相较于上次的 y 坐标偏移，可以当做高



                //面积 = 宽 X 高
                // cur_x - last_x 结果是上一个点到当前点的横向距离, 这个距离过程中，高度保持为abs(last_y)
                aeraSum += (xpoint - preX) * Math.abs(preYOffset);



                //记录
                preX = xpoint;
                preYOffset += yOffest;
            }

            //终点计算
            if(xEnd > preX){

                aeraSum += (xEnd - preX) * Math.abs(preYOffset);
            }


            System.out.println(aeraSum);


        }catch(Exception e){

            e.printStackTrace();
            System.out.println("程序异常"+(null == e ? "" : e.getMessage()));
        }


    }
}
